/**
 * 发送请求封装
 */
function baseRequest(url, method = 'GET', data = {}, {
	noAuth = false, // 是否跳过身份认证，false默认不做 token 相关验证
	noVerify = false // 是否跳过后端返回的 code 验证，false默认会检查 data.code 是否为 200
} = {}, params) {
	let apiUrl = 'http://127.0.0.1:7979'; // 小程序api
	let headers = params ? {
		'content-type': 'application/x-www-form-urlencoded'
	} : {
		'content-type': 'application/json'
	};

	// 处理授权 - 还未设置
	// if (!noAuth) {
	// 	if (!store.state.app.token && !checkLogin()) {
	// 		// toLogin(); // 未登录则跳转登录方法
	// 		return Promise.reject({
	// 			msg: '未登录'
	// 		});
	// 	}
	// 	headers['Authorization'] = store.state.app.token;
	// } // 后端配置token请求头

	return new Promise((resolve, reject) => {
		uni.request({
			url: `${apiUrl}/${url}`,
			method,
			header: headers,
			data: data || {}, // 避免 data 为空时导致的问题
			success: ({
				data,
				statusCode
			}) => {
				if (noVerify || data?.code === 200) {
					resolve(data);
				} else if ([410000, 410001, 410002, 401].includes(data?.code)) {
					// toLogin(); // 未登录则跳转登录方法
					reject(data);
				} else {
					reject(data?.message || `请求错误 (状态码: ${statusCode})`);
				}
			},
			fail: (err) => reject(err?.errMsg || '请求失败')
		});
	});
}

// 统一封装 HTTP 请求方法
const request = {};
['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach((method) => {
	request[method] = (api, data, opt, params) => baseRequest(api, method, data, opt, params);
});

export default request;


使用示例

// 需要身份验证，验证 code
// request.get('user/info').then(res => console.log(res));

// 不需要身份验证（适用于公开 API）
// request.get('news/list', {}, { noAuth: true }).then(res => console.log(res));

// 不需要验证 code（适用于特殊 API）
// request.get('custom/api', {}, { noVerify: true }).then(res => console.log(res));